Игровое зрение

Это перевод статьи уважаемого PD-механика, программиста и просто хорошего багета парня LordShinjo. Для тех, кто читал его оригинал, все равно будет кое-что новое — в основном я сгорю буду говорить о том, почему всё плохо, какие проблемы с видимостью имеются в доте и как они были решены.


Читать дальше →

WC3 never stops to surprise me

In order to support Octarine Orb's spell lifesteal (and overall increase accuracy attack detecting system) I had to move all hardcoded spells into wrappers. Dummies throwing spells being perfect way to detect if damage is magical — just look for Aloc.

Everything was fine — simple triggers, nothing complex. Every hardcoded shockwave being copied and used as dummy-wave: original wave deals 0 damage and no animation, dummy wave provides damage and visuals. These changes affects Lina, Banshee and Magnus in first place.

There were few reports about failed shockwave casters. Only few — and that caused me to think it's minor bug, which cannot be reproduced in any set I've tried. I did know that shockwave cannot be casted on cliffs, so my best guess was — somehow people break my system, casting waves right into cliifs. But once map hit RGC, things went crazy — amount of reports about broken waves rised as Spartacus in da best times. Even more — waves didn't work even on flat terrain. That what I can call catastrophic issue.

One more thing — there were quite few reports of SF's Requiem of Souls being broken as well. If you remember, it's based on Shockwaves too. But let's dig things out.

Читать дальше →

Нож в спину от варкрафта, или искусство кэширования

Ради того, чтобы иметь возможность отличить урон, нанесенный заклинаниями, от урона с атак, мне пришлось переделать все стандартные заклинания в обертки. Это они же, только кастует их уже дамми, а не настоящий герой. Источник урона другой, поэтому можно точно сказать, было это заклинанием или сам герой ударил.

Всё прошло хорошо — вери изи триггеры, никакой высшей математики, на каждую стандартную волну (лина магнус баньша ) — фейковая для каста, настоящая у дамми. Оно работало без проблем, даммик в точности повторял приказ и осечек быть не могло. Я знал про теоретическую возможность даммика не суметь бросить волну, если игрок отдал приказ бросить волну в самого себя, но на практике этот кейс тоже был учтен и не представлял большого интереса — часто ли щелкают на своего героя?

Пару репортов с нерабочими волнами я списал именно на тот случай, когда даммик по каким-то причинам не сумел бросить заклинание. Подумал, что бросок пошел на скалы. Смотреть не посчитал нужным — были и более заметные баги, и более частые. И только когда карта вышла на ргц, я понял, что это серьезная проблема, и что мало репортов не значит «редкий». Кроме того, ульта SF тоже использовала фейковые волны, и они тоже иногда не работали.

Селфи драколича, по мнению игроков за СФа или лину

В статье описано, как был диагностирован баг и что он из себя представляет.


Читать дальше →

Winhack и с чем его едят

В 2008-2009 гг дота набрала сурьезную популярность, и встал вопрос — как следить за ней? Формат карт варкрафта подразумевает разворачивание событий от старта и до самого конца, без необходимости что-то сохранять в процессе. Кликнул в XY, отдал приказ X в юнита Y — ничего из этого дублировать в реплей не нужно, но и узнать о событии аналогично нельзя. А хотелось как-то автоматизировать процесс получения инфы о КДА, героях, артефактах. Тогда и придумали использовать для этого функцию SyncStored*. (* = Integer/String/etc, формат данных).

Читать дальше →